Skip to content

Fix downgrade sublibrary bounds#1252

Draft
ChrisRackauckas-Claude wants to merge 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-downgrade-sublibraries
Draft

Fix downgrade sublibrary bounds#1252
ChrisRackauckas-Claude wants to merge 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-downgrade-sublibraries

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

This PR should be ignored until reviewed by @ChrisRackauckas.

Summary

  • Add missing downgrade resolver floors for affected sublibraries.
  • Keep OptimizationQuadDIRECT out of the centralized downgrade matrix and test it in a custom job that restores URL-sourced packages after julia-downgrade-compat.
  • Raise downgrade floors for PythonCall, SciMLBase/ModelingToolkitBase stack entries, and affected AD/sublibrary dependencies so downgraded manifests resolve with allow_reresolve=false.
  • Keep the OptimizationEvolutionary LogExpFunctions downgrade fix from master intact.

Local verification on current head

Current branch head: 913cc3c74e9297f2b83f1d68f41fdd21f95e9215, rebased on 4443cb59690b84f1745159c5d196784cf824b249.

Ran Julia 1.10 downgrade/test cycles locally with allow_reresolve=false, OPTIMIZATION_TEST_GROUP=Core, and generated downgrade manifests removed afterward:

  • OptimizationBase: Core | 777 pass / 777 total
  • OptimizationBBO: Core | 25 pass / 25 total
  • OptimizationNOMAD: Core | 4 pass / 4 total
  • SimpleOptimization: Core | 7 pass / 7 total
  • OptimizationNLPModels: Core | 10 pass / 10 total
  • OptimizationMOI: Core | 40 pass, 2 broken / 42 total
  • OptimizationSciPy: Core | 160 pass, 1 broken / 161 total
  • OptimizationMadNLP: Core | 97 pass, 1 broken / 98 total
  • OptimizationQuadDIRECT: Core | 1 pass / 1 total after the URL-source repair step

Additional checks:

  • git diff --check origin/master..HEAD: passed with no output
  • ruby -e 'require "yaml"; YAML.load_file(".github/workflows/DowngradeSublibraries.yml"); puts "yaml ok"': yaml ok
  • julia --startup-file=no --project=/home/crackauc/sandbox/tmp_20260708_165240_11300/.runic-env -m Runic --check lib/OptimizationMadNLP/test/core_tests.jl: passed
  • find lib -name Manifest.toml -o -name JuliaManifest.toml: no generated manifests remain

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor Author

Follow-up pushed in b9b48c878.

Local checks run before pushing:

  • OptimizationMadNLP Core on Julia 1.10 with SciMLBase v2.146.0 lower-bound scratch env: Core | 97 pass, 1 broken, 98 total in 14m25s; Pkg.test("OptimizationMadNLP"; coverage=false, allow_reresolve=false) exited 0.
  • SimpleOptimization Core with exact SimpleNonlinearSolve v2.12.0: Core | 7 pass, 7 total; exited 0.
  • git diff --check: passed.
  • .github/workflows/DowngradeSublibraries.yml YAML parse: passed.
  • Runic check on changed Julia files: passed.

Scope note: this PR is based directly on master and no longer carries the OptimizationEvolutionary multi-objective test fixes. Those are in #1250. I locally tested re-adding only the Evolutionary downgrade compat here, but OptimizationEvolutionary Core still fails on the same multi-objective assertions without #1250, so I left #1252 scoped to the non-Evolutionary downgrade follow-ups rather than duplicating #1250.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor Author

Follow-up pushed in 9d21667d0.

Additional CI-equivalent local checks run in scratch clones after applying the patch and running julia-actions/julia-downgrade-compat@v2 with the skip lists from the failing jobs:

  • lib/OptimizationMadNLP: downgrade rewrite succeeded; Pkg.test(; coverage=true, julia_args=["--check-bounds=yes", "--compiled-modules=yes", "--depwarn=yes"], force_latest_compatible_version=false, allow_reresolve=false) passed with Core | 97 pass, 1 broken, 98 total in 15m06s.
  • lib/OptimizationSciPy: downgrade rewrite succeeded with PythonCall v0.9.30; the same CI-equivalent Pkg.test passed with Core | 160 pass, 1 broken, 161 total in 1m21s.
  • Separate probe: PythonCall v0.9.30 with SciMLBase v2.122.1 precompiled SciMLBasePythonCallExt successfully; PythonCall v0.9.29 is the version that failed in CI.

The remaining OptimizationEvolutionary failures on this branch are still expected until #1250 is included/merged, since the multi-objective test fixes live there rather than being duplicated here.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor Author

CI follow-up on 9d21667d0: the fresh GitHub run now has the targeted downgrade fixes green:

  • downgrade-sublibraries / test (lib/OptimizationMadNLP): success
  • downgrade-sublibraries / test (lib/OptimizationSciPy): success
  • downgrade-sublibraries / test (lib/SimpleOptimization): success
  • non-downgrade MadNLP/SciPy/SimpleOptimization sublibrary jobs observed so far are also green

Remaining failures are outside this PR commit:

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude force-pushed the agent/fix-downgrade-sublibraries branch from 9d21667 to 913cc3c Compare July 10, 2026 03:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants